// app/middleware/blacklist.js
module.exports = () => {
  return async (ctx, next) => {
    const supplierId = ctx.params.id;
    const isBlacklisted = await ctx.app.redis.sismember('supplier:blacklist', supplierId);

    // 记录黑名单检查审计日志
    await ctx.model.BlacklistAudit.create({
      operator_id: ctx.user.id,
      supplier_id: supplierId,
      action: 'CHECK',
      result: isBlacklisted ? 'DENIED' : 'ALLOWED',
      ip_address: ctx.ip,
      remark: isBlacklisted ? '供应商在黑名单中，拒绝访问' : '供应商不在黑名单中，允许访问'
    });

    if (isBlacklisted) {
      ctx.throw(403, '该供应商已被列入政采云黑名单', {
        code: 'BLACKLISTED_SUPPLIER',
        reference: '<mcurl name="黑名单管理办法" url="https://zcy.gov.cn/blacklist-policy"></mcurl>'
      });
    }

    await next();
  };
};